nodejs中间层后端代理解决跨域 | 您所在的位置:网站首页 › node js 后端 › nodejs中间层后端代理解决跨域 |
nodejs中间层后端代理解决跨域 ⼀、请求时跨域,⽆法请求 1. 在⽆论axios还是ajax请求时,若不是⾃⼰后端给写好的后端接⼝地址,其他接⼝地址若⽆该地址内部对应的配置时,浏览器请求数据是请求不 到的,会发⽣跨域问题 2. 如前端随便请求⼀个⽹上的后端地址: axios.get('http://is.snssdk.com/api/news/feed/v51/').then(res=>{ console.log(res) }) 请求不到,会发⽣跨域 跨域报错信息 ⼆、解决办法 可以在本地启⼀个nodejs服务器转接代理,前端请求本地服务器,可在⾃⼰代码中设置跨域可访问,⽽后端转接请求后端是没有跨域问题的(需 要真实请求的地址设置可访问才可取得数据),跨域问题是浏览器的限制。 1. nodejs代码 const express = require('express') const axios = require('axios').default // 需要 npm i axios var cors = require('cors') // 需要 npm i cors const app = express() app.use(cors()) // 允许跨域调⽤ app.use(express.urlencoded({ extended: false })) app.use(express.json()) // 请求对应路径 app.get('/toutiao', async (req, res) => { const result = await axios.get('http://is.snssdk.com/api/news/feed/v51/') res.send(result.data) }) // 对所有代理请求进⾏封装 app.post('/proxy', async(req, res) => { const url = req.body.url const result = await axios.get(url) res.send(result.data) }) app.listen(3000, () => { console.log(` 服务器运⾏在 3000 端⼝ `) }) 2. 前端请求代码 |
CopyRight 2018-2019 实验室设备网 版权所有 |